import java.lang.reflect.Array;

public class Test {
    public void duplicateZeros(int[] arr) {
        int[] newArray=new int[8];
        int cur=0;
        int dest=0;
        int n=newArray.length;

        while (cur<n){
            while (dest<=n){
                if (arr[cur]!=0){
                    newArray[dest]=arr[cur];
                    cur++;
                    dest++;
                }else if (arr[cur]==0){
                    newArray[dest]=0;
                    dest++;
                    newArray[dest]=0;
                    cur++;
                    dest++;
                }
            }
        }

    }

    public void duplicateZeros1(int[] arr) {
        int dest=-1;
        int cur=0;

        //1.找到最后一个复写的数
        while(dest<arr.length){
            if(arr[cur]!=0){
                dest++;
                cur++;
            }else if(arr[cur]==0){
                dest+=2;
                cur++;
            }
        }

        //2.处理边界情况
        if(dest==arr.length){
            dest-=2;
            arr[dest]=0;
            cur--;
        }

        //3.从后往前完成复写操作
        while(cur>=0){
            if(arr[cur]!=0){
                arr[dest]=arr[cur];
                dest--;
                cur--;
            }else if(cur==0){
                arr[dest]=0;
                dest--;
                arr[dest]=0;
                cur--;
                dest--;
            }
        }
    }


        public void duplicateZeros2(int[] arr) {
            int dest=-1,cur=0,n=arr.length;

            //1.找到最后一个复写的数
            while(dest<n){
                if(arr[cur]!=0){
                    dest++;
                }else {
                    dest+=2;
                }
                if(dest>=n-1)break;
                cur++;
            }

            //2.处理边界情况
            if(dest==n){
                arr[n-1]=0;
                cur--;
                dest-=2;
            }

            //3.从后往前完成复写操作
            while(cur>=0){
                if(arr[cur]!=0){
                    arr[dest--]=arr[cur--];
                }else {
                    arr[dest--]=0;
                    arr[dest--]=0;
                    cur--;
                }
            }
        }
    }

